//package com.ctvit.struts.chat;
//
//import java.io.File;
//import java.io.FileOutputStream;
//import java.io.IOException;
//import java.io.OutputStream;
//import java.nio.ByteBuffer;
//import java.nio.CharBuffer;
//import java.text.SimpleDateFormat;
//import java.util.Calendar;
//
//import org.apache.catalina.websocket.MessageInbound;
//import org.apache.catalina.websocket.WsOutbound;
//import org.apache.commons.lang3.StringUtils;
//import org.apache.commons.logging.Log;
//import org.apache.commons.logging.LogFactory;
//import org.apache.tika.Tika;
//import org.apache.tika.mime.MimeType;
//import org.apache.tika.mime.MimeTypes;
//import org.w3c.tools.codec.Base64Decoder;
//
//import com.ctvit.struts.common.CommonFunc;
//
//
//@SuppressWarnings("deprecation")
//public class MyMessageInbound extends MessageInbound {
//	protected final Log log = LogFactory.getLog(getClass());
//	private String clientId;
//	private String toClientId;
//	
//	public MyMessageInbound(String clientId) {
//		super();
//		this.clientId = clientId;
//	}
//
//	@Override
//	protected void onBinaryMessage(ByteBuffer arg0) throws IOException {
//		// TODO Auto-generated method stub
//		Tika tika=new Tika();
//		byte [] content = new byte[arg0.limit()];
//		arg0.get(content);
//		String typeString=tika.detect(content);
//		String dotExtend="";
//		if ("image/jpeg".equals(typeString)){
//			dotExtend=".jpeg";
//		}else if ("image/bmp".equals(typeString)){
//			dotExtend=".bmp";
//		}else if ("video/x-ms-asf".equals(typeString)){
//			dotExtend=".asf";
//		}else if ("audio/amr".equals(typeString)){
//			dotExtend=".amr";
//		}
//		String dateTimeFile=new SimpleDateFormat("yyyyMMddHHmmss").format(Calendar.getInstance().getTime());
//		String dateFile=new SimpleDateFormat("yyyyMMdd").format(Calendar.getInstance().getTime());
//		String dir=CommonFunc.remoteFileDir+File.separator+"wechat"+File.separator+this.clientId+File.separator+dateFile;
//		File file=new File(dir);
//		if (!file.exists()) file.mkdir();
//		FileOutputStream out = new FileOutputStream(dir+File.separator+dateTimeFile+dotExtend);
//		out.write(content);
//		out.close();
//		String msgText=dotExtend+"|http://192.168.3.4:8080/messageCenter/attached/wechat/"+this.clientId+"/"+dateFile+"/"+dateTimeFile;
//		for (MyMessageInbound messageInbound : InitServlet.getSocketList()) {
//			if (StringUtils.equals(messageInbound.getClientId(), this.toClientId)){
//				WsOutbound outbound = messageInbound.getWsOutbound();
//				CharBuffer buffer=CharBuffer.wrap(msgText);
//				outbound.writeTextMessage(buffer);
////				outbound.writeBinaryMessage(arg0);
//				outbound.flush();
//			}
//		}
//	}
//
//	@Override
//	protected void onTextMessage(CharBuffer msg) throws IOException {
//		String msgString=msg.toString();
//		String[] arr=msgString.split("_");
//		String msgText="";String paraclientId="";
//		if (arr.length==2){
//			paraclientId=arr[0];
//			msgText=arr[1];
//			this.toClientId=paraclientId;
//		}else{
//			msgText=msgString;
//		}
//		if (StringUtils.equals(msgText, "newsession")){//只为了通知服务器与谁通话
//		}else{
//			msgText=".txt|"+msgText;
//			if (StringUtils.isEmpty(this.toClientId)){
//				for (MyMessageInbound messageInbound : InitServlet.getSocketList()) {
//					if (StringUtils.equals(messageInbound.getClientId(), paraclientId)){
//						WsOutbound outbound = messageInbound.getWsOutbound();
//						CharBuffer buffer=CharBuffer.wrap(msgText);
//						outbound.writeTextMessage(buffer);
//						outbound.flush();
//					}
//				}
//			}else{
//				for (MyMessageInbound messageInbound : InitServlet.getSocketList()) {
//					if (StringUtils.equals(messageInbound.getClientId(), this.toClientId)){
//						WsOutbound outbound = messageInbound.getWsOutbound();
//						CharBuffer buffer=CharBuffer.wrap(msgText);
//						outbound.writeTextMessage(buffer);
//						outbound.flush();
//					}
//				}
//			}
//		}
//	}
//
//	@Override
//	protected void onClose(int status) {
//		InitServlet.getSocketList().remove(this);
//		log.debug(this.clientId+" closed!");
//		super.onClose(status);
//	}
//
//	@Override
//	protected void onOpen(WsOutbound outbound) {
//		super.onOpen(outbound);
//		log.debug(this.clientId+" opened!");
//		InitServlet.getSocketList().add(this);
//	
//	}
//
//	public String getClientId() {
//		return clientId;
//	}
//
//	public void setClientId(String clientId) {
//		this.clientId = clientId;
//	}
//
//	public String getToClientId() {
//		return toClientId;
//	}
//
//	public void setToClientId(String toClientId) {
//		this.toClientId = toClientId;
//	}
//	 public void GenerateImage(String imgStr, String imgFilePath) {// 对字节数组字符串进行Base64解码并生成图片
////	        if (imgStr == null) // 图像数据为空
////	            return false;
////	        BASE64Decoder decoder = new BASE64Decoder();
////	        try {
////	            // Base64解码
////	            byte[] bytes = decoder.decodeBuffer(imgStr);
////	            for (int i = 0; i < bytes.length; ++i) {
////	                if (bytes[i] < 0) {// 调整异常数据
////	                    bytes[i] += 256;
////	                }
////	            }
////	            // 生成jpeg图片
////	            OutputStream out = new FileOutputStream(imgFilePath);
////	            out.write(bytes);
////	            out.flush();
////	            out.close();
////	            return true;
////	        } catch (Exception e) {
////	            return false;
////	        }
//	    }
//}
